#==============================================================================
# ■ 自动跳过剧情
#------------------------------------------------------------------------------
# 　开关开启后，自动跳过剧情，包括：
#   1、跳过所有不包含输入数值和显示选择项的文本
#   2、取消所有的“等待”指令
#   3、取消场所移动的淡入淡出效果
#   4、取消所有的动画显示
#   5、人物和NPC的强制移动取消移动和等待的过程
#   注意：由于跳过了一些需要时间的效果，可能导致BUG，慎用
#==============================================================================
module Skip_Plot
  # 跳过剧情的条件
  def self.enabled?
    # 测试用条件是按住G，可以自行更改
    Kboard.press?($R_Key_V) && !$game_switches[100] && !$game_switches[171]
  end
end

class Interpreter
  #--------------------------------------------------------------------------
  # ● 跳过显示文章
  #--------------------------------------------------------------------------
  alias command_101_main command_101
  def command_101
    result = command_101_main
    if Skip_Plot.enabled?
      # 没有选择项或者数值输入的情况下，取消显示文章
      unless $game_temp.choice_proc || $game_temp.num_input_variable_id > 0
        $game_temp.message_proc.call if $game_temp.message_proc
        $game_temp.message_text = nil
        $game_temp.message_proc = nil
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● 取消等待指令
  #--------------------------------------------------------------------------
  alias command_106_main command_106
  def command_106
    if Skip_Plot.enabled?
      if self == $game_system.map_interpreter
        $game_map.update
      else
        @wait_count = 1
      end
    else
      command_106_main
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 取消场所移动的淡入淡出
  #--------------------------------------------------------------------------
  alias command_201_main command_201
  def command_201
    result = command_201_main
    if Skip_Plot.enabled? && $game_temp.transition_processing
      $game_temp.transition_processing = false
      Graphics.transition(0)
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● 取消动画显示
  #--------------------------------------------------------------------------
  alias command_207_main command_207
  def command_207
    if Skip_Plot.enabled?
      return true
    else
      command_207_main
    end
  end
end

class Game_Character
  #--------------------------------------------------------------------------
  # ● 跳过移动路线
  #--------------------------------------------------------------------------
  alias update_normal update
  def update
    # 取消移动路线的等待指令
    if Skip_Plot.enabled? && @move_route_forcing
      @wait_count = 0
    end
    update_normal
  end
  alias update_move_normal update_move
  def update_move
    # 取消移动过程
    if Skip_Plot.enabled? && @move_route_forcing
      @real_x = @x * 128
      @real_y = @y * 128
    else
      update_move_normal
    end
  end
  alias update_jump_normal update_jump
  def update_jump
    # 取消跳跃过程
    if Skip_Plot.enabled? && @move_route_forcing
      @real_x = @x * 128
      @real_y = @y * 128
      @jump_count = 0
    else
      update_jump_normal
    end
  end
end